Low density parity check (LDPC) codes are widely used to correct errors in transmission in communications channels. FIG. 1 shows an exemplary conventional communication system 100 comprising an LDPC code. As shown in FIG. 1, encoder 110 takes user data and generates a codeword that is modulated into an appropriate signal (e.g. voltage, electromagnetic wave) by modulator 120 and transmitted through the channel 130. Demodulator 140 demodulates the signal and provides information or messages that are suitable for LDPC decoding. Typical LDPC decoders use a message transmission process that iteratively refines the encoded information to obtain the transmitted data. Modulator 120, channel 130 and demodulator 140 may be referred to collectively as the “channel” 150.
There exist many known decoding algorithms. In general, the term soft-input, soft-output (SISO) algorithm is used to denote an algorithm that can take an inputted signal with any number of levels and output an equivalent signal. Many SISO algorithms use probability or log-likelihood ratio (LLR) information to reduce errors in the data stream. The iterative use of SISO algorithms is also a known method for error correction. Many of the existing algorithms are, however, very complex to implement and require an unacceptably high computational effort that reduces performance of the communications system.
If the input information is highly correlated, the performance of a decoder can be improved by taking advantage of the correlated information. A conventional way to improve binary decoding of correlated input information is to exchange soft information between the detector (and/or modulator) and the decoder. Another approach is to replace the binary LDPC code with a non-binary LDPC code. However, these two solutions are often very complex to implement.
What is needed are methods and systems for improving performance of a decoder in ways that are less complex, easier to implement, and/or more accurate than conventional methods and systems.